﻿using System;
using System.Collections.Generic;
using System.Text;
using METODESA.Server.Data.Exceptions;
using METODESA.Server.Data.METODESA.Entity;
using NHibernate;

namespace METODESA.Server.Data.METODESA.Nhibernate
{
    public class ProveedorDao:BaseDao
    {

        //  Mostrar Proveedor por Cédula

        public static IList<Proveedor> GetProveedorByCedula(string cedula)
        {
            try
            {
                myISession = NHibernateHelper.GetCurrentSession();
                ICriteria myCriteria = myISession.CreateCriteria(typeof(Proveedor));
                myCriteria.Add(NHibernate.Expression.Expression.Eq("CedulaRif", cedula));
                IList<Proveedor> proveedores = myCriteria.List<Proveedor>();
                return proveedores;

            }
            catch (Exception e)
            {
                throw new ProveedorNotExistsException("There's no proveedor");
                return null;
            }

        }


        // Mostrar Proveedores por Nombre 
        public static IList<Proveedor> GetProveedorByName(string Nombre)
        {
            try
            {

                myISession = NHibernateHelper.GetCurrentSession();
                ICriteria myCriteria = myISession.CreateCriteria(typeof(Proveedor));
                myCriteria.Add(NHibernate.Expression.Expression.Like("Nombre",'%'+Nombre+'%'));
                IList<Proveedor> proveedores = myCriteria.List<Proveedor>();
                return proveedores;

            }
            catch (Exception e)
            {
                throw new ProveedorNotExistsException("There's no proveedor with the provided name");
                return null;
            }

        }
        public static IList<Proveedor> getAllProveedor()
        {
            try
            {
                myISession = NHibernateHelper.GetCurrentSession();
                return myISession.CreateCriteria(typeof(Proveedor)).List<Proveedor>();
            }
            catch (Exception e)
            {
                throw new ProveedorNotExistsException("There's no proveedor");
                return null;
            }
        }

        public static Proveedor getProveedorById(int id)
        {
            Proveedor proveedor = null;
            Boolean flag = true;

            try
            {
                myISession = NHibernateHelper.GetCurrentSession();
                proveedor = (Proveedor)myISession.Load(typeof(Proveedor), id);
                flag = false;
            }
            catch (HibernateException e)
            {
                throw new ProveedorNotExistsException("There's no proveedor with the provided id");

            }

            if (flag)
            {
                //throw new ClientNotExistsException("There's no client with the provided id");
                return null;
            }

            return proveedor;
        }

    }
}
